package com.hourses.mapper;

import com.hourses.page.Page;
import com.hourses.pojo.Role;
import com.hourses.pojo.RoleAuth;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
@Mapper
public interface RoleMapper {
    /**
     * 查询数据库中所有的用户角色
     * @return
     */
    public List<Role> selectAllRoles();

    /**
     * 查询用户已有的角色
     */
    public List<Role> selectUserRolesByUserId(Integer userId);

    /**
     * 根据userId删除用户原本拥有的角色
     * @param userId
     * @return
     */
    public int deleteUserRolesByUserId(Integer userId);


    /**
     * 根据roleName获取roleId
     * @param role
     * @return
     */
    public int getRoleIdByRoleName(String role);


    /**
     * 向user_role表进行插入操作
     * @param userId
     * @param roleId
     * @return
     */
    public int insertUserRole(Integer roleId,Integer userId);


    /**
     * 获取角色列表
     * @param role
     * @return
     */
    //step1.先获取角色总数
    public Integer getRoleTotalSize(@Param("role") Role role);
    //step2.获取当前页需要展示的数据
    public List<Role> getRoleListPage(@Param("role") Role role,@Param("page") Page page);

    //添加角色
    public Integer addRole(Role role);

    //根据role_name或者roleCode查询role
    public Integer selectRoleByNameOrCode(Role role);

    //启用或者禁用角色·
    public Integer startOrCloseRole(Role role);

    //根据roleId删除角色
    public Integer deleteRoleById(Integer roleId);

    //根据roleId查询auths
    public List<Integer> selectAuthIdsByRoleId(Integer roleId);

    //根据roleId删除role的所有权限
    public Integer deleteAuthsByRoleId(Integer roleId);

    //向role_auth表中添加数据
    public Integer insertRoleAuth(RoleAuth roleAuth);

    //修改角色描述
    public Integer updateRoleDesc(Role role);
}